package com.luxsoft.em2.replication.local.consumers;

import javax.jms.Topic;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;

import com.luxsoft.siipap.model.core.Cliente;
import com.luxsoft.sw3.replica.EntityLog;
import com.luxsoft.utils.LoggerHelper;

/**
 * Handler para escuchar cambios de clientes en las oficinas centrales y registrar los cambios en 
 * la sucursal
 * 
 * @author Ruben Cancino 
 *
 */
@Service(value="clienteLocalHandler")
public class ClienteLocalHandler  implements InitializingBean{
	
	Logger logger=LoggerHelper.getLogger();
	
	
	@Autowired
	@Qualifier("clientesTopic")	
	private Topic clientesTopic;
	
	public void importarEntidad(final EntityLog log) {
		Cliente cliente=(Cliente)log.getBean();
		if(log.getTipo().equals(EntityLog.Tipo.ALTA)){
			if(log.getSucursalOrigen().equals("TACUBA")){
				logger.info("Alta de cliente  ingonrada por ser originada en esta sucursal..."+cliente.getContactos().size());
			}
		}else{
			logger.info("Cliente recibido para su actualizacion local "+cliente.getClave()+"  en Topic: "+clientesTopic);
		}
		
	}
	
	public void afterPropertiesSet() throws Exception {
		Assert.notNull(clientesTopic,"No se ha registrado un javax.jms.Topic para clientes escuhcar cambios de clientes en las oficinas");
		logger.info("Topic para clientes: "+clientesTopic.getTopicName());
	}
	
	public void setClientesTopic(Topic clientesTopic) {
		this.clientesTopic = clientesTopic;
	}

}
